// 这个文件是需要用来做用户的操作(登录，注册，忘记密码等)


// Token，通常指代 JSON Web Token (JWT)，是一种开放标准（RFC 7519），它定义了一种紧凑且自包含的方式，可以使用密钥对信息进行数字签名，用于在各方之间安全地将信息作为 JSON 对象传输
// 前后端进行登录的页面，都需要一个 token (令牌, 用来验证登录人的信息的)
// token是一个很长的加密的字符串
// 当一个用户登录的时候，如果登录成功了，那么后端就可以去产生一个这个登录的人的token
// 返回给前端

// 前端登录结束以后，每一个接口调用，都带上这个token


var express = require('express');
var router = express.Router();

// 引入jsonwebtoken，用于生成token
const jwt = require('jsonwebtoken');


const mongoose = require("mongoose");


const adminSchema = new mongoose.Schema({
  username: String,
  password: String,
});

const Admin = mongoose.model('admins', adminSchema);


// 登录接口
router.post("/login", (req, res, next) => {
  const { username, password } = req.body;

  if (!username || !password) {
    res.json({
      success: false,
      message: "用户名或者密码不能为空"
    })
  } else {
    // 就需要用用户名和密码去数据库比对，是否有这个账号密码
    // findOne用于查找数据库是否有这么一项
    Admin.findOne({ username, password })
      .then(user => {
        // user表示的就是找到的那一项
        if (user) {

          const secret = 'your_secret_key'; // 请替换为你的密钥，密钥需要保密
          // 第一个参数是对象，用户关联登录的人的信息
          // 第二个是自定义的密钥，是一个字符串，后面还需要用这个密钥来解密
          // 第三个是过期时间，可以是字符串来表示小时，也可以直接用数字来表示秒
          const token = jwt.sign({username: username, password: password}, secret, { expiresIn: "60h" }); // 生成token

          // console.log("token:" + token);
          


          res.json({
            success: true,
            message: "登录成功",
            token,
          })
        } else {
          res.json({
            success: false,
            message: "用户名或者密码错误"
          })
        }
      })
      .catch(err => {
        console.error(err);
      });
    
  }

  
})


module.exports = router;
